import {
  IsNotEmpty,
  Length,
  ValidateIf,
  IsIn,
  IsNumber,
  IsString,
} from 'class-validator';

export class CreateUserDto {
  @IsNotEmpty({ message: '手机不能为空' })
  @Length(1, 36, { message: '手机长度1-36个字符' })
  phone: string;

  @IsNotEmpty({ message: '昵称不能为空' })
  @Length(1, 16, { message: '昵称长度1-16个字符' })
  nickname: string;

  @IsNotEmpty({ message: '头像不能为空' })
  @Length(1, 64, { message: '头像最多64个字符' })
  avatar: string;

  @IsNotEmpty({ message: '性别不能为空' })
  @IsNumber({}, { message: '性别必须是数字' })
  gender: number;

  @IsNotEmpty({ message: '出生年月不能为空' })
  @Length(1, 16, { message: '出生年月最多16个字符' })
  borth_date: string;

  @IsNotEmpty({ message: '身高不能为空' })
  @IsNumber({}, { message: '身高必须是数字' })
  height: number;

  @IsNotEmpty({ message: '体重不能为空' })
  @IsNumber({}, { message: '体重必须是数字' })
  weight: number;

  @IsNotEmpty({ message: '工作不能为空' })
  @Length(1, 16, { message: '工作最多16个字符' })
  work: string;

  @IsNotEmpty({ message: '学历不能为空' })
  @Length(1, 16, { message: '学历最多16个字符' })
  education: string;

  @ValidateIf(
    (o) =>
      undefined !== o.family_members &&
      null !== o.family_members &&
      '' !== o.family_members,
  )
  @Length(1, 16, { message: '家庭成员最多16个字符' })
  family_members?: string;

  @IsNotEmpty({ message: '当前状态不能为空' })
  @IsNumber({}, { message: '当前状态必须是数字' })
  status: number;

  @IsNotEmpty({ message: '工作地址不能为空' })
  @Length(1, 32, { message: '工作地址最多32个字符' })
  work_addr: string;

  @IsNotEmpty({ message: '居住地址不能为空' })
  @Length(1, 32, { message: '居住地址最多32个字符' })
  live_addr: string;

  @ValidateIf(
    (o) => undefined !== o.hobby && null !== o.hobby && '' !== o.hobby,
  )
  @Length(1, 128, { message: '爱好最多128个字符' })
  hobby?: string;

  @IsNotEmpty({ message: '期望不能为空' })
  @Length(1, 4096, { message: '期望最多4096个字符' })
  want: string;

  @IsNotEmpty({ message: '联系方式不能为空' })
  @Length(1, 64, { message: '联系方式最多64个字符' })
  contact: string;
}
